In this script, there is conducted the estimation for the
measure_marginal approach for a single given env. The
programs is the set of bytecode programs with varying number of opcodes.
The measurements are time measurements of program runs or benchmarks.
The estimation of each opcode is calculated as the regression against
the number of a given opcode in the executed programs.
Parametrization. The evm client name env=erigon, the file with
programs programs=pg_marginal_full.csv, the file with measurements
results=results_marginal_full_erigon.csv,
the output csv file with estimated cost
output_estimated_cost=reports-12.01.2025/estimated_cost_marginal_full_erigon.csv,
should the details be included in the report details=FALSE.
The comparision of result. Before and after removing outlying
measurement. Switch removed_outliers to FALSE
to see the comparison.
if (removed_outliers) {
measurements = remove_compare_outliers(measurements, 'measure_total_time_ns', c(env))
}
Now we can investigate the linear regressions.
for (opcode in all_opcodes) {
estimate = compute_all(opcode=opcode, env=env, use_median=TRUE, plots=ifelse(details,'all','scatter'))
estimates[nrow(estimates) + 1, ] = c(opcode, estimate, env)
}
The resulting estimates based on the regressions above.
estimates
## op estimate_marginal_ns estimate_marginal_ns_stderr env
## 1 ADD 4.972727 0.8407221 erigon
## 2 MUL 7.776364 0.5806178 erigon
## 3 SUB 4.450909 0.5470368 erigon
## 4 DIV 6.596364 0.4863654 erigon
## 5 SDIV 9.076364 0.7562961 erigon
## 6 MOD 6.210000 0.6062590 erigon
## 7 SMOD 10.308182 0.5563424 erigon
## 8 ADDMOD 10.101818 0.3489741 erigon
## 9 MULMOD 23.619091 0.7096656 erigon
## 10 EXP 33.822727 1.2000687 erigon
## 11 SIGNEXTEND 11.729091 0.9752764 erigon
## 12 LT 5.720909 0.5205361 erigon
## 13 GT 6.430909 0.6454363 erigon
## 14 SLT 6.521818 0.7780662 erigon
## 15 SGT 6.529091 0.8146059 erigon
## 16 EQ 6.577273 0.5136998 erigon
## 17 ISZERO 4.794545 0.6922969 erigon
## 18 AND 4.686364 0.6345439 erigon
## 19 OR 5.349091 0.4836675 erigon
## 20 XOR 5.725455 0.5526758 erigon
## 21 NOT 4.244545 0.5687548 erigon
## 22 BYTE 6.305455 0.5930423 erigon
## 23 SHL 9.270000 0.9589907 erigon
## 24 SHR 8.951818 0.6716037 erigon
## 25 SAR 9.514545 0.6017837 erigon
## 26 KECCAK256 306.936364 2.9553926 erigon
## 27 ADDRESS 11.791818 0.7245327 erigon
## 28 ORIGIN 6.858182 0.5975327 erigon
## 29 CALLER 12.210909 0.5035116 erigon
## 30 CALLVALUE 2.986364 0.4545894 erigon
## 31 CALLDATALOAD 27.469091 1.0488764 erigon
## 32 CALLDATASIZE 4.587273 0.7811745 erigon
## 33 CALLDATACOPY 30.061818 0.9162754 erigon
## 34 CODESIZE 4.956364 0.9808448 erigon
## 35 CODECOPY 17.631818 0.7790764 erigon
## 36 GASPRICE 2.660909 0.9246453 erigon
## 37 EXTCODESIZE 75.725455 1.5969086 erigon
## 38 EXTCODECOPY 82.139091 0.9966856 erigon
## 39 RETURNDATASIZE 5.159091 0.3936170 erigon
## 40 RETURNDATACOPY 64.566364 12.5840647 erigon
## 41 EXTCODEHASH 89.587273 2.0811914 erigon
## 42 COINBASE 6.780000 0.5517296 erigon
## 43 TIMESTAMP 5.683636 0.7049084 erigon
## 44 NUMBER 4.406364 0.4685490 erigon
## 45 DIFFICULTY 6.356364 0.4657346 erigon
## 46 GASLIMIT 4.510909 0.8445360 erigon
## 47 CHAINID 5.397273 0.7658812 erigon
## 48 SELFBALANCE 21.115455 0.3114955 erigon
## 49 POP 3.789091 0.5516763 erigon
## 50 MLOAD 10.124545 0.6120470 erigon
## 51 MSTORE8 10.037273 0.7534359 erigon
## 52 JUMP 18.596364 3.1069684 erigon
## 53 JUMPI 25.825455 4.7826379 erigon
## 54 PC 4.470909 0.4223025 erigon
## 55 MSIZE 4.937273 0.5531078 erigon
## 56 GAS 4.915455 0.4395706 erigon
## 57 JUMPDEST 2.378182 0.7165039 erigon
## 58 PUSH0 3.773636 0.3931389 erigon
## 59 LOG0 169.572727 2.8005024 erigon
## 60 LOG1 188.881818 3.2633918 erigon
## 61 LOG2 206.995455 3.6455840 erigon
## 62 LOG3 225.690000 2.1332003 erigon
## 63 LOG4 246.410000 1.7571473 erigon
## 64 CALL 392.440000 5.0254809 erigon
## 65 RETURN 42.229091 4.1743891 erigon
## 66 DELEGATECALL 278.067273 4.0398979 erigon
## 67 STATICCALL 331.874545 4.0039168 erigon
## 68 REVERT 65.220909 6.7057565 erigon
## 69 PUSH1 6.030909 0.6243574 erigon
## 70 PUSH2 8.233636 0.5540129 erigon
## 71 PUSH3 8.348182 0.7876708 erigon
## 72 PUSH4 8.470000 0.6476284 erigon
## 73 PUSH5 9.147273 0.5070953 erigon
## 74 PUSH6 8.284545 0.6230447 erigon
## 75 PUSH7 8.575455 0.5081386 erigon
## 76 PUSH8 7.860000 0.6047838 erigon
## 77 PUSH9 8.720000 0.7509942 erigon
## 78 PUSH10 7.470000 0.6508292 erigon
## 79 PUSH11 6.972727 0.6066830 erigon
## 80 PUSH12 7.803636 0.5412807 erigon
## 81 PUSH13 7.643636 0.6829725 erigon
## 82 PUSH14 8.418182 0.5653493 erigon
## 83 PUSH15 8.149091 0.4805476 erigon
## 84 PUSH16 7.213636 0.4768810 erigon
## 85 PUSH17 8.760909 0.4974490 erigon
## 86 PUSH18 7.977273 0.4927961 erigon
## 87 PUSH19 8.705455 0.3606931 erigon
## 88 PUSH20 9.407273 0.5017175 erigon
## 89 PUSH21 9.413636 0.9011153 erigon
## 90 PUSH22 8.840909 0.5908699 erigon
## 91 PUSH23 8.919091 0.4703396 erigon
## 92 PUSH24 8.535455 0.4823781 erigon
## 93 PUSH25 7.666364 0.3594853 erigon
## 94 PUSH26 8.747273 0.6672901 erigon
## 95 PUSH27 8.341818 0.5355896 erigon
## 96 PUSH28 8.987273 0.6152175 erigon
## 97 PUSH29 9.092727 0.7235508 erigon
## 98 PUSH30 9.104545 0.6458837 erigon
## 99 PUSH31 10.374545 0.7137670 erigon
## 100 PUSH32 9.014545 0.6215479 erigon
## 101 DUP1 6.410000 0.7439761 erigon
## 102 DUP2 5.237273 0.7519780 erigon
## 103 DUP3 5.124545 0.7021318 erigon
## 104 DUP4 5.343636 0.3613534 erigon
## 105 DUP5 4.490909 0.9456187 erigon
## 106 DUP6 4.496364 0.5451669 erigon
## 107 DUP7 4.646364 0.7149241 erigon
## 108 DUP8 4.924545 0.5332155 erigon
## 109 DUP9 4.397273 0.8006661 erigon
## 110 DUP10 4.873636 0.6147751 erigon
## 111 DUP11 4.911818 0.5653405 erigon
## 112 DUP12 5.001818 0.6064435 erigon
## 113 DUP13 3.680909 0.5848421 erigon
## 114 DUP14 3.635455 0.7532945 erigon
## 115 DUP15 4.495455 0.6364037 erigon
## 116 DUP16 5.013636 0.7345454 erigon
## 117 SWAP1 4.889091 0.4400597 erigon
## 118 SWAP2 5.237273 0.4839802 erigon
## 119 SWAP3 5.290909 0.5144576 erigon
## 120 SWAP4 5.620000 0.7047039 erigon
## 121 SWAP5 4.887273 0.4896752 erigon
## 122 SWAP6 5.184545 0.5203738 erigon
## 123 SWAP7 5.976364 0.6131602 erigon
## 124 SWAP8 5.528182 0.2229939 erigon
## 125 SWAP9 5.659091 0.2723659 erigon
## 126 SWAP10 5.672727 0.4555766 erigon
## 127 SWAP11 5.073636 0.7397813 erigon
## 128 SWAP12 5.477273 0.3776364 erigon
## 129 SWAP13 5.838182 0.5729289 erigon
## 130 SWAP14 5.854545 0.2717221 erigon
## 131 SWAP15 5.154545 0.6014583 erigon
## 132 SWAP16 6.580909 0.4770662 erigon
The results are exported to reports-12.01.2025/estimated_cost_marginal_full_erigon.csv.